package cn.iocoder.yudao.module.infra.enums;

import cn.iocoder.yudao.framework.common.core.ArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 人脸库分组枚举
 *
 * @author 芋道源码
 */
@AllArgsConstructor
@Getter
public enum FaceGroupEnum implements ArrayValuable<Integer> {

    PASSENGER(1, "passenger_group", "乘客组"),
    DRIVER(2, "driver_group", "司机组"),
    COMPANY_STAFF(3, "company_staff_group", "公司人员组");

    public static final Integer[] ARRAYS = Arrays.stream(values()).map(FaceGroupEnum::getType).toArray(Integer[]::new);

    /**
     * 分组类型
     */
    private final Integer type;
    /**
     * 分组编码
     */
    private final String code;
    /**
     * 分组名称
     */
    private final String name;

    @Override
    public Integer[] array() {
        return ARRAYS;
    }

    /**
     * 根据类型获取枚举
     *
     * @param type 类型
     * @return 枚举
     */
    public static FaceGroupEnum valueOf(Integer type) {
        return Arrays.stream(values())
                .filter(item -> item.getType().equals(type))
                .findFirst()
                .orElse(null);
    }

    /**
     * 根据编码获取枚举
     *
     * @param code 编码
     * @return 枚举
     */
    public static FaceGroupEnum valueOfCode(String code) {
        return Arrays.stream(values())
                .filter(item -> item.getCode().equals(code))
                .findFirst()
                .orElse(null);
    }

}